++############%%%%%##%#%%%##%@@%####%#%%%%%########%%%%%%#%%%%%%#%%#%
++*##############**%%%%##*+*#%%#%####%%%%###########################%
++++*###########*++@@@@%##*#%%#%####%%%##%#############%%###########%
++++++***#####*++++%@@@@@@@@@@%%#*#%########%%#%%%#####%%###########%
++++****+++++++****+#%@@@@@@@@@%++#*+*+***#######%######%###########%
+*#######%##*++*****++*#%%%%%#*+*+*#********##+#%###################%
##############*+*+++*****++++*****+**#######***%%###################%
###############+++**##****#**+****+************#%#%#################%
%######%##%###%**#######*###**++*%%@@@@%#*******#%%#################%
%##%####%%%#####%%##%########*+#@@@@@@@@@@#***###%%#################%
%###################%%%%##%%###%%%%%%@@@@@%+##%%%###################%
%####################%#%##%%#####%####%%%%#*###%%###################%
%############################################%######################%
%######################%####################%#######################%
%########################%##############%###########################%
%#####################################################%#############%
%########################%##########################################%
%#########################################################%#########%
%##################################%#%##############################%
%#####################################################%#%###########%
%####################################%##############################%
%########################%##########################################%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@